<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="Doc.css" rel="stylesheet"/>
<title>TreeGrid - Data download</title>
</head>
<body>
<div class="Doc">


<h1>Download data</h1>
<p>TreeGrid documentation</p>

This document describes TreeGrid data sources for download and XML structure for download.<br />
For basic information about TreeGrid communication settings (AJAX, AJAX SOAP, submit, direct) see <a href="DataCommunication.htm">Data communication with server</a>.<br />
For information about creating TreeGrid see <a href="Create.htm">Creating TreeGrid</a>.<br /><br />

TreeGrid can download data from remote server, local server, local files or from XML placed directly in the source HTML page.<br /><br />

TreeGrid by default downloads from these basic data sources in this order: <b>Text</b>, <b>Defaults</b>, <b>Base</b>, <b>Layout</b>, <b>Data</b>. <br />
The data source names and count can be changed by <a href="#Source">Source</a> attribute.<br />
It does not matter what setting is defined in which data source, but it is recommended to return data from the data source according to its meaning as described below.<br />
<i>If used <b>server paging</b> or <b>reloading body</b> the <b>Data</b> source can contain only variable rows definition (&lt;Body> tag).</i><br />

<!-- Source -->
<a name="Source"></a>
<div class="XML">
   <u>new <b>12.1</b></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i>string</i>
   <h4>Source</h4> <s>["Defaults+Text,Base,Layout;Data"]</s>
</div>
List of source names for download on start. It does <u>not</u> define the Page source and sources for upload. <br />
The source name is used as prefix_ if defined by &lt;treegrid> / &lt;bdo> or object name if defined by TreeGrid() function.<br />
There are more separators to separate the individual items:<br />
<table>
  <tr><td style='width:80px;'>'<b>;</b>' semicolon</td><td>separates layout and data sources. If no ';' is present, the last item is taken as data source. To distinguish layout and data sources is important for server paging and for ReloadBody API.</td></tr>
  <tr><td>'<b>,</b>' comma</td><td>separates the sources loaded one by one, the second one starts loading after the first one is finished. Use if the order of loading is important.</td></tr>
  <tr><td>'<b>+</b>' plus</td><td>separates the sources loaded all at once. Use if the order of loading is irrelevant.</td></tr>
</table>

<!-- Text_ -->
<a name="Text_"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i style="font-weight:bold;">prefix</i>
   <h4>Text_</h4> <s></s>
</div>
Data source to <i style="color:rgb(51,102,255);font-weight:bold;">download all texts and language settings</i>. It is loaded as the first data source.<br /> 
By default it is set <tt><b style="color:blue;">Text_Url="Text.xml"</b> <b>Text_Method="Get"</b> <b>Text_Static='Text&#39;</b> <b>Text_Relative='1'</b></tt> to download the predefined TreeGrid texts from file Text.xml. The Text.xml file is searched in directory with GridE.js script.<br />
You can translate and update the Text.xml for all languages you want and provide the appropriate file based on user language settings.<br />
It is <b style="color:red;">required source</b>, but you can keep the <b>default</b> value "Text.xml".<br />

<!-- Text_Start -->
<a name="Text_Start"></a>
<div class="XML">
   <u>chg <b>7.0</b></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i>string</i>
   <h4>Text_Start</h4> <s>["Initializing ..."]</s>
</div>
Message displayed on grid initialization, when TreeGrid texts are loading.<br />
Only if SuppressMessage is not set.<br />
<i>Since 7.0</i> its default value is "Initializing ...", so it is displayed by default. To hide only this message, set it to empty string.<br />
In time of the message display TreeGrid styles are not loaded yet, so it uses internal message setting in the Standard style. To re-style this message, define GridMessage CSS class in page &lt;head>.<br />
The default message width is 140, it can be changed by Text_MessageWidth attribute.<br />
It is always attribute of <b>Text</b> data source, even if the Text data source is not included in the <a href="#Source">Source</a>.<br />

<!-- Text_StartErr -->
<a name="Text_StartErr"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i>string</i>
   <h4>Text_StartErr</h4> <s></s>
</div>
Message displayed if TreeGrid texts failed to load and TreeGrid hangs.<br />
It is always attribute of <b>Text</b> data source, even if the Text data source is not included in the <a href="#Source">Source</a>.<br />

<!-- Defaults_ -->
<a name="Defaults_"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i style="font-weight:bold;">prefix</i>
   <h4>Defaults_</h4> <s></s>
</div>
Data source to <i style="color:rgb(51,102,255);font-weight:bold;">download <u>system</u> predefined values</i> of all parameters in TreeGrid. It is loaded as the second data source.<br />
<strong>This file is required for TreeGrid to work properly. This file should <u>not</u> be modified and must be from the same version as GridE.js script itself.</strong><br />
By default it is set <tt><b style="color:blue;">Defaults_Url="Defaults.xml"</b> <b>Defaults_Method="Get"</b> <b>Defaults_Static="Defaults"</b> <b>Defaults_Relative='1'</b></tt> to download the predefined TreeGrid values from file Defaults.xml. The Defaults.xml file is searched in directory with GridE.js script.<br />
It is <b style="color:red;">required</b> source, but you can keep the <b>default</b> value "Defaults.xml".<br />

<!-- Base_ -->
<a name="Base_"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i style="font-weight:bold;">prefix</i>
   <h4>Base_</h4> <s></s>
</div>
Data source to <i style="color:rgb(51,102,255);font-weight:bold;">download <u>custom</u> predefined values</i> of some parameters in TreeGrid. It is loaded as the third data source.<br />
By default is set <tt><b>Base_Method="Get"</b></tt>.<br /> 
It is <b style="color:rgb(51,153,102);">optional</b> source, to have some predefined values for all TreeGrids on site or in application.<br />

<!-- Layout_ -->
<a name="Layout_"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i style="font-weight:bold;">prefix</i>
   <h4>Layout_</h4> <s></s>
</div>
Data source to <i style="color:rgb(51,102,255);font-weight:bold;">download grid structure</i> (configuration, columns, header, filter, group, search, fixed rows, pager, ...). It is loaded as the fourth data source.<br />
By default is set <tt><b>Layout_Method="Get"</b></tt>.<br /> 
It is <b style="color:rgb(51,153,102);">optional</b> source, all the layout can be included in <a href="#Data_">Data</a> source instead.<br />
It is <b style="color:red;">required</b> source for <b>server paging</b> and / or <b>ReloadBody</b> usage.<br />

<!-- Data_ -->
<a name="Data_"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i style="font-weight:bold;">prefix</i>
   <h4>Data_</h4> <s></s>
</div>
Data source to <i style="color:rgb(51,102,255);font-weight:bold;">download grid data</i> (variable rows or fixed data rows). It is loaded as the fifth data source.<br />
It can contain also all grid data structure if Layout data source is not used (not possible for <b>server paging</b> or ReloadBody).<br />
For <b>server paging</b> it should contain only pages definition (&lt;B> tags).<br />
By default is set <tt><b>Data_Method="Get" Data_Data="Data"</b></tt><br />
It is <b style="color:red;">required</b> source, you need to set at least this data source.<br />

<!-- Page_ -->
<a name="Page_"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i style="font-weight:bold;">prefix</i>
   <h4>Page_</h4> <s></s>
</div>
Data source to <i style="color:rgb(51,102,255);font-weight:bold;">download data for individual page or child page</i>. It is loaded on request, when the page is being displayed.<br />
It can return only variable row within requested page. The requested page can be find out from request configuration XML sent in <b>Data</b> parameter.<br />
By default is set <tt><b>Page_Method="Form" Page_Data="Data"</b></tt>.<br />   
<i>Used only for server paging or server child paging.</i><br />
Can be used only with AJAX communication, set attribute <b style="color:rgb(51,102,255);">Page_Url</b>.<br />
It is <b style="color:red;">required</b> source for <b>server paging</b> or <b>server child paging</b>.<br /> 
For other paging types is <b style="color:rgb(51,153,102);"><u>not</u> used</b> at all.<br />

<!-- BasePath -->
<a name="BasePath"></a>
<div class="XML">
   <u></u> <b style="margin-left:-20px;width:115px;">&lt;treegrid,bdo></b> <i>string</i>
   <h4>BasePath</h4> <s>[path_to_GridE.js]</s>
</div>
Base path to all TreeGrid base files required files: <b>Defaults.xml</b>, <b>Text.xml</b>, <b>Grid.css</b>, <b>Gantt.css</b>, <b>Help.html</b>.<br />
The default value is the path to <b>GridE.js</b> file, it is usual to place all the required files along to the GridE.js.<br />
The BasePath is add also to &lt;treegrid Defaults_Url and Text_Url>, but not to &lt;Cfg CSS and HelpFile/>.<br />
<i>It must end with '/' if contains standard directory path.</i><br />

<!-- OnReadData -->
<a name="OnReadData"></a>
<div class="API">
   <u></u> <b>API event</b> <i>bool</i>
   <h4>OnReadData</h4>
   <s>(<i>TGrid</i> <b>grid</b>, <i>object</i> <b>source</b>, <i>function</i> <b>Func</b>)</s>
</div>
Called before data are requested by any method (AJAX, submit, ...) from source Defaults, Text, Base,  Layout or Body.<br />
<b>source</b> is the data source that is accessed, for example grid.Source.Layout. The source.<b>Name</b> contains the name of source, e.g. "Layout".<br />
It can return true to suppress the loading and provide the downloading by custom way and must call function <b>Func</b> (int <b>result</b>), where result&lt;0 is error code or 0 for ok.<br />

<!-- ReadData -->
<a name="ReadData"></a>
<div class="API">
   <u></u> <b>API method</b> <i>void</i>
   <h4>ReadData</h4>
   <s>(<i>object</i> <b>source</b>, <i>function</i> <b>Func</b>)</s>
</div>
Reads data from given source according to its _Url/_Tag/_Data parameters.<br /> 
<b>source</b> is the data source to be is accessed, for example grid.Source.Layout.<br />
After finish calls function <b>Func</b>: function <b>Func</b> (<i>int</i> result), result&lt;0 is error code and >=0 is success.<br />

<!-- Loading -->
<a name="Loading"></a>
<div class="API">
   <u></u> <b>API variable</b> <i>bool</i>
   <h4>Loading</h4>
   <s>[0]</s>
</div>
It is set to 1 during downloading and updating base data - when creating grid, reloading grid, or reloading body of grid.<br />
When Loading is set, <u>no</u> API function that reads or changes grid data can be called.<br />
See also <a href="Create.htm#Rendering">Rendering</a> variable.<br />

<!-- OnInit -->
<a name="OnInit"></a>
<div class="API">
   <u>new <b>14.1</b></u> <b>API event</b> <i>bool</i>
   <h4>OnInit</h4>
   <s>(<i>TGrid</i> <b>grid</b>, <i>bool</i> <b>reload</b>)</s>
</div>
Called before the TreeGrid object is initialized. It is called before it is added to Grids array.<br />
<b>reload</b> is true when called on reloading (by Reload method/action, but not by ReloadBody), false when called on creating.<br />
The <b>grid</b> has already set attributes Source and MainTag, these attributes can be changed in the event.<br />
Return true to not create the grid, in this case the <a href="Create.htm#TreeGrid">TreeGrid</a> function returns null.<br />
Useful to link TreeGrid object to JavaScript component that creates it using &lt;treegrid> tag.<br />

<!-- OnLoaded -->
<a name="OnLoaded"></a>
<div class="API">
   <u><i>upd <b>10.0</b></i></u> <b>API event</b> <i>bool</i>
   <h4>OnLoaded</h4>
   <s>(<i>TGrid</i> <b>grid</b>, <i>function</i> <b>next</b>)</s>
</div>
Called after all data has been loaded successfully, when creating or reloading grid.<br />
It is called before the grid data has been updated, so you cannot call any row or column manipulation function.<br />
<i>Since 10.0</i> you can return <b>true</b> to <u>not</u> continue, if required some asynchronous action. And after finish call <b>next</b>( ) to continue.<br />

<!-- OnLoadError -->
<a name="OnLoadError"></a>
<div class="API">
   <u></u> <b>API event</b> <i>void</i>
   <h4>OnLoadError</h4>
   <s>(<i>TGrid</i> <b>grid</b>)</s>
</div>
Called when data cannot be downloaded and the grid cannot render and shows fatal error.<br />
There is always called <b>OnLoaded</b> or <b>OnLoadError</b> event.<br />

<!-- OnUpdated -->
<a name="OnUpdated"></a>
<div class="API">
   <u>new <b>6.1</b></u> <b>API event</b> <i>void</i>
   <h4>OnUpdated</h4>
   <s>(<i>TGrid</i> <b>grid</b>)</s>
</div>
Called after all grid data were prepared for use, but before the grid calculated, filtered, sorted, grouped and rendered.<br />
Here you can call any data manipulation API methods to update the data before they are calculated and sorted/grouped/filtered.<br />

<!-- OnReady -->
<a name="OnReady"></a>
<div class="API">
   <u>new <b>6.0</b></u> <b>API event</b> <i>void</i>
   <h4>OnReady</h4>
   <s>(<i>TGrid</i> <b>grid</b>, <i>bool</i> <b>start</b>)</s>
</div>
Called after all grid data were prepared for use, before the grid is rendered.<br />
It is called when creating or reloading grid (<b>start</b> = 1) or when reloading body or updating detail grid (<b>start</b> = 0).<br />
Here you can call any data manipulation API methods to update the data before they are rendered.<br />
It is the only time during grid creating when both the <a href="#Loading">Loading</a> and <a href="Create.htm#Rendering">Rendering</a> properties are false. <i>Do not call here API methods that render grid or update grid view!</i><br />

<!-- CacheTimeout -->
<a name="CfgCacheTimeout"></a>
<div class="XML">
   <u>new <b>6.0</b></u> <b>&lt;Cfg></b> <i>int</i>
   <h4>CacheTimeout</h4> <s>[10]</s>
</div>
How long TreeGrid waits for its CSS style (Grid.css and Gantt.css files) to be completely loaded, in seconds.<br /> 
If the timeout expires, TreeGrid shows fatal error.<br />

<!-- Prepared -->
<a name="CfgPrepared"></a>
<div class="XML">
   <u></u> <b>&lt;Cfg></b> <i>bool</i>
   <h4>Prepared</h4> <s>[0]</s>
</div>
You can prepare input xml data for grid to speed up loading grid. If input xml data are prepared, set in them Prepared to 1.<br />
In prepared xml data:<br />
<b>Date</b> type values must be set as count of milliseconds from 1/1/1970 00:00:00.000, see also <a href="TypeDate.htm#FormatGMT">GMT</a> attribute.<br />
<b>Float</b> values must be set in standard English format, without leading zero, but with leading zero for values between -1 and 1.<br />
All <b>Int</b>, <b>Float</b> and <b>Date</b> type cells must have set its value (or set value in its default row cell).<br />

<!-----------------------------------------------------------------------  Layout XML structure  ------------------------------------------------->
<a name="LayoutXML"></a>
<h2>Layout XML structure</h2>

<b>Layout XML</b> defines all parts in TreeGrid except data rows and cells.<br />
It is sent from server to grid. It is generated by server script. It is usually static XML file.<br />
Used when downloading grid for first time or reloading all data for the grid (function Reload).<br />
Used as <b>response</b> from data sources <b>Text</b>, <b>Defaults</b>, <b>Base</b>, <b>Layout</b>.<br />
For small grids it can be merged with <a href="#DataXML">Data XML</a> and returned in <b>Data response</b>.<br /><br />

The <b>columns</b> are merged by their <b>Name</b> - if there is already defined some <b>column</b> &lt;C> with the same <b>Name</b>, it is updated, no new column is added.<br />
The <b>defaults</b> are merged by their <b>Name</b> - if there is already defined some <b>default row</b> &lt;D> with the same <b>Name</b>, it is updated, no new default is added.<br />
The fixed and space rows are merged by their <b>id</b> - if there is already defined some <b>fixed or space row</b> with the same <b>id</b>, it is updated, no new row is added.<br /><br />

To specify position of the main <b>Header</b> row place to &lt;Head> or &lt;Foot> section a tag with id='Header' on the appropriate position.<br />
To specify position of the main <b>Toolbar</b> row place to &lt;Solid> section a tag with <b>id='Toolbar'</b> on the appropriate position and also set its Space attribute.<br />
You <u>cannot</u> change position of the main left side <b>Panel</b> column, but you can hide it by <tt>&lt;<b>Panel Visible</b>='<b>0</b>'/></tt> and define new column(s) with <tt>Type="Pane"</tt> on the appropriate position in columns section.<br /><br />

<tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Grid</b>></tt> (Root tag, can accept any count of introduced child tags in any order, only one tag Grid per response is permitted)<br /><br />

  <div class="L1">
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">IO</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (a server response)<br /><br />
    
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Cfg</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (base grid settings)<br /><br />

  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Actions</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (assigned global actions)<br /><br />
  
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Colors</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (cell background color setting for various row states)  <br /><br />
  
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Def</b>></tt> (list of default settings for rows or columns)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">D</b></tt> <b style="color:green;">Name</b>=<i>'name of default' ... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt><br />
          <i>... More tags &lt;D> ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Def</b>></tt><br /><br />
     
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Panel</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (one predefined most left side column Type="Panel")<br /><br />
    
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">LeftCols</b>></tt> (Columns fixed to the left side, not horizontally scrollable)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">C</b></tt> <b style="color:green;">Name</b>=<i>'column name' ... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (individual columns)<br />
          <i>... more tags &lt;C> for other columns ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">LeftCols</b>></tt><br /> 
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Cols</b>></tt> (Variable columns, between left and right, horizontally scrollable)<br /> 
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">C</b></tt> <b style="color:green;">Name</b>=<i>'column name' ... attributes ... </i><tt style="font-size:150%;color:red;">/></tt> (individual columns)<br />
          <i>... more tags &lt;C> for other columns ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Cols</b>></tt><br /> 
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">RightCols</b>></tt> (Columns fixed to the right side, not horizontally scrollable)<br /> 
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">C</b></tt>> <b style="color:green;">Name</b>=<i>'column name' ... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (individual columns)<br />
          <i>... more tags &lt;C> for other columns ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">RightCols</b>></tt><br /><br />
       
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Header</b></tt><i> ... row and cell attributes ... </i><tt style="font-size:150%;color:red;">/></tt> (predefined first "main" header, by default with id="Header")<br /><br />
    
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Head</b>></tt> (List of top fixed rows, not vertically scrollable, rows cannot contain children rows)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Filter</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (special row with user interface for filtering rows by column(s))<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Header</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (other headers or main header with id="Header")<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">I</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (data row)<br />
          <i>... More tags &lt;I>, &lt;Filter>,&lt;Header> ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Head</b>></tt><br /><br />
     
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Foot</b>></tt> (List of bottom fixed rows, not vertically scrollable, rows cannot contain children rows)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Filter</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (special row with user interface for filtering rows by column(s))<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Header</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (other headers or main header with id=”Header”)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">I</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (data row)<br />
          <i>... More tags &lt;I>, &lt;Filter>,&lt;Header> ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Foot</b>></tt><br /><br />
     
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Solid</b>></tt> (List of special solid rows, these rows can be positioned in more locations in table)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Group</b></tt> <i>... group row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (special row with user interface for grouping)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Search</b></tt> <i>... search row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (special row with user interface for search and advanced filter)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Toolbar</b></tt> <i>... toolbar row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (special row with toolbar buttons, or main toolbar with id="Toolbar")<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Space</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (special row with no special interface, just to display custom cells)<br />
          <i>... More tags &lt;>Space> &lt;Group> &lt;Search> &lt;Toolbar> ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Solid</b>></tt><br /><br />
    
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Toolbar</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (predefined first "main" toolbar, by default with id="Toolbar")<br />
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">MenuCfg</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (settings for configuration menu)<br />
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">MenuColumns</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (settings for columns visibility menu)<br />
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Pager</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (right side pager settings)<br /><br />

  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Script</b>></tt> (JavaScript code to run once)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">S</b></tt> <b style="color:green;">Name</b>=<i>'name of script'</i> <tt style="font-size:150%;color:red;">></tt>
          JavaScript code to run after the data source is loaded
          <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">S</b>></tt><br />
          <i>... More tags &lt;S> ...</i><br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Script</b>></tt><br /><br />

  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Debug</b></tt> <b style="color:green;">Message</b>=<i>'Message to display in debug window'</i> <tt style="font-size:150%;color:red;">/></tt><br /><br />
  
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Lang</b>></tt> (All language depended texts and formats)<br />
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Alert</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (texts for alert messages, only plain text, no HTML tags)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Text</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (html text for messages and other use)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Gantt</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (Gantt chart texts)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">MenuButtons</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (button captions in all popup menus)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">MenuCopy</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (copy menu item captions)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">MenuFilter</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (filter operator menu item captions)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">MenuCfg</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt>  (configuration menu item names and values)<br />
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Format</b></tt> <i>... attributes ...</i> <tt style="font-size:150%;color:red;">/></tt> (number and date formats and regional settings)<br />
          </div>
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Lang</b>></tt> 
  </div><br />
<tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Grid</b>></tt> 

<!-----------------------------------------------------------------------  Data XML structure  ------------------------------------------------->
<a name="DataXML"></a>
<h2>Data XML structure</h2>

<b>Data XML</b> defines body (data) rows. Here is listed the structure for <b>no</b> or <b>client paging</b>. For server paging see the <a href="PagingServer.htm#DataRequest">server paging</a>.<br />
It is sent from server to grid. It is generated by server script. It is usually generated from server database.<br />
Used when downloading grid for first time or reloading all data for the grid (function Reload) or reloading only body (function ReloadBody).<br />
Used as <b>response</b> from data source <b>Data</b>.<br />
For small grids it can be merged with <a href="#LayoutXML">Layout XML</a>.<br /> 
It can also contain some parts from <a href="#LayoutXML">Layout XML</a>, like fixed rows or configuration settings if they need to generate dynamically to let the rest of the layout to be in static file.<br />
It can also contain configuration settings like sort, filter or group if you want to change them when reloading body.<br /><br />

<i>The body rows are <u>not</u> updated by their <b>id</b> attribute - <u>no</u> two body rows should have the same id. It is due speed reason.</i><br /><br />

For server <b>child paging</b> some or all rows with children can have set <b>Count</b> attribute as the count of the expected children instead of the children themselves. The children will be downloaded on demand. In this case the row must have set also its <b>id</b> or <b>Rows</b> attribute to identify it on server.<br /><br />

<tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Grid</b>></tt><br />
  <div class="L1">
  <span style="color:#999;">
  <tt style="font-size:150%;color:grey;">&lt;<b>Par</b>></tt> (list of prepared parameters for <span style="color:darkred">short</span> formats) 
    <div class="L1">
    <tt style="font-size:150%;color:grey;">&lt;<b>P</b></tt> <b>Name</b>="list name" <b>List</b>="parameter names, comma separated"<tt style="font-size:150%;color:grey;">/></tt>
    </div>
  <tt style="font-size:150%;color:grey;">&lt;/<b>Par</b>></tt><br />
  </span>
  <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">Body</b>></tt> 
    <div class="L1">
    <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">B</b>></tt> (Only one page with all rows)
      <div class="L1">
      <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">I</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">></tt> (data row)
        <div class="L1">  
        <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">I</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">></tt> (data row)
          <div class="L1">
          <tt style="font-size:150%;color:red;">&lt;<b style="color:blue;">I</b></tt> <i>... row and cell attributes ...</i> <tt style="font-size:150%;color:red;">></tt> (data row)
            <div class="L1">
            <i>... More tags &lt;I>, with possible children tags &lt;I> with possible children and so on - <strong>unlimited levels of tree ...</strong></i>
            </div> 
          <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">I</b>></tt><br /> 
          <i>... More tags &lt;I> ...</i>
          </div> 
        <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">I</b>></tt><br /> 
        <i>... More tags &lt;I> ...</i>
        </div> 
      <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">I</b>></tt><br />                       
      <i>... More tags &lt;I> ...</i>
      </div> 
    <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">B</b>></tt>
    </div> 
  <tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Body</b>></tt> 
  </div>
<tt style="font-size:150%;color:red;">&lt;/<b style="color:blue;">Grid</b>></tt> 

</div>
</body>	
</html>